package cj.studio.ecm;

/**
 * 元件或服务区间，用于说明在类型被请求时如何产生实例<br>
 * 实例均被服务容器持有
 * 
 * @author Administrator
 * 
 */
// 还可以支持：chipsession,request,
public enum Scope {
	// 多例和运行时服务在编译期是一样的，运行时请求多例会生成新服务，而请求运行时服务不会生成新服务，但在运行时可为运行时服务工厂增加或移除运行时服务。这二者只是服务实例放到各自的工厂
	// 运行时服务不能在容器加载时注入，即它不能注入到属性中，因为那时候运行时服务还没被添加，运行时服务一般用在程序代码段中。
	/**
	 * 不论java和是jss均有一个实例在ecm容器,且jss文件只加载一次
	 */
	singleon, 
	/**
	 * 每次服务请求均生成一个新实例，而对于jss，每次生成一个新的scriptObjectMirror对象，但这些对象共用脚本容器中的同一js实例，且脚本文件不再重新加载。
	 */
	multiton, 
	/**
	 * 对于java服务，运行时是指在可向ecm容器动态添加java对象。而对于jss服务，每次请求均会加载脚本并每次产生新实例。
	 */
	runtime
}
